package ru.compft.common.services;

import org.springframework.transaction.annotation.Transactional;
import ru.compft.common.data.Module;

import java.util.List;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 14:00
 * Сервис работы с модулями
 * По умолчанию все методы только для чтения
 */
@Transactional(readOnly = true)
public interface ModuleService {
    /**
     * Получение списка всех модулей системы, без каких либо ограничений
     *
     * @return
     */
    List<Module> getAllModules();

    /**
     * Получение модулей от определенного индекса (from) и определенного количества (count)
     * , без каких либо ограничений
     *
     * @param from
     * @param count
     * @return
     */
    List<Module> getModules(int from, int count);

    /**
     * Подсчитываем все модули в системе, без каких либо ограничений
     *
     * @return
     */
    int countAllModules();

    /**
     * Получаем модуль по ID, без каких либо ограничений
     *
     * @param moduleId
     * @return
     */
    Module getModuleById(Long moduleId);

    /**
     * Получаем модуль по коду
     *
     * @param code
     * @return
     */
    Module getModuleByCode(String code);

    /**
     * Получаем модуль по относительному пути, где он расположен
     *
     * @param path
     * @return
     */
//    Module getModuleByPath(String path);

    /**
     * Редактируем модуль
     *
     * @param module
     * @return
     */
    Module editModule(Module module);
}
